package cn.codergege.kotlinbasics.controlflow

import org.junit.jupiter.api.Assertions.*
import org.junit.jupiter.api.Test
import org.springframework.boot.test.context.SpringBootTest

@SpringBootTest
class IfDemoTest {

    @Test fun testIf() {
        // 可以跟以前以前使用 if
        val a = 10
        val b = 20
        if(a > b) {
            assertTrue(a > b)
        } else {
            assertTrue(!(a > b))
        }
    }

    @Test fun testIfExpr() {
        // if 是表达式
        val a = 10
        val b = 20
        val c = if(a > b) a else b
        assertTrue(c == b)
        // Kotlin 中不可以这样, 也不需要它了
        // if 完美替代, 可读性更好
        // val x = a > b? a: b

        // 花括号也是可以的, 返回的是花括号内最后表达式的值
        val max = if (a > b) {
            println("a is greater than b")
            a
        } else {
            println("a is not greater than b")
            b
        }
        assertEquals(b, max)
    }

    @Test fun testNestedIf() {
        val a = 3
        val b = 5
        val c = 1

        val max = if (a > b) {
            if (a > c)
                a
            else
                c
        } else {
            if (b > c)
                b
            else
                c
        }
        assertTrue(max == 5)
    }

}